![]() |
![]() | ||||||||||
![]() | |||||||||||
![]() ![]() ![]() ![]()
╨αßε≥α ± ⌠αΘδα∞Φ |
╩δα±± StreamTokenizer Σδ ≡ατßε≡α Γ⌡εΣφ√⌡ ∩ε≥εΩεΓ┼±δΦ Γ√ ±ετΣασ≥σ ∩≡ΦδεµσφΦσ, ∩≡σΣφατφα≈σφφεσ Σδ εß≡αßε≥ΩΦ ≥σΩ±≥εΓ (φα∩≡Φ∞σ≡, ≥≡αφ±δ ≥ε≡ ΦδΦ ∩≡ε±≥ε ≡ατßε≡∙ΦΩ ⌠αΘδα Ωεφ⌠Φπ≤≡α÷ΦΦ, ±εΣσ≡µα∙σπε τφα≈σφΦ ≡ατδΦ≈φ√⌡ ∩α≡α∞σ≥≡εΓ), Γα∞ ∞εµσ≥ ∩≡ΦπεΣΦ≥ⁿ± Ωδα±± StreamTokenizer. ╤ετΣαΓ εß·σΩ≥ ²≥επε Ωδα±±α Σδ Γ⌡εΣφεπε ∩ε≥εΩα, Γ√ ∞εµσ≥σ δσπΩε ≡σ°Φ≥ⁿ ταΣα≈≤ Γ√ΣσδσφΦ Φτ ²≥επε ∩ε≥εΩα ε≥Σσδⁿφ√⌡ ±δεΓ, ±Φ∞ΓεδεΓ, ≈Φ±σδ Φ ±≥≡εΩ Ωε∞∞σφ≥α≡ΦσΓ. ╩εφ±≥≡≤Ω≥ε≡ Ωδα±±α StreamTokenizer─δ ±ετΣαφΦσ εß·σΩ≥εΓ Ωδα±±α StreamTokenizer ∩≡σΣ≤±∞ε≥≡σφ Γ±σπε εΣΦφ Ωεφ±≥≡≤Ω≥ε≡: public StreamTokenizer(InputStream istream); ┬ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ²≥ε∞≤ Ωεφ±≥≡≤Ω≥ε≡≤ φσεß⌡εΣΦ∞ε ∩σ≡σΣα≥ⁿ ±±√δΩ≤ φα τα≡αφσσ ±ετΣαφφ√Θ Γ⌡εΣφεΘ ∩ε≥εΩ. ╠σ≥εΣ√ Ωδα±±α StreamTokenizer─δ φα±≥≡εΘΩΦ ∩α≡α∞σ≥≡εΓ ≡ατßε≡∙ΦΩα StreamTokenizer Φ ∩εδ≤≈σφΦ ε≥Σσδⁿφ√⌡ ²δσ∞σφ≥εΓ Γ⌡εΣφεπε ∩ε≥εΩα Γ√ Σεδµφ√ ∩εδⁿτεΓα≥ⁿ± ∞σ≥εΣα∞Φ, ε∩≡σΣσδσφφ√∞Φ Γ Ωδα±±σ StreamTokenizer. ╨α±±∞ε≥≡Φ∞ ±α∞√σ ΓαµφΦσ Φτ φΦ⌡. ╠σ≥εΣ√ Σδ φα±≥≡εΘΩΦ ∩α≡α∞σ≥≡εΓ ≡ατßε≡∙ΦΩα═Φµσ ∞√ ∩≡ΦΓσδΦ ∩≡ε≥ε≥Φ∩√ ∞σ≥εΣεΓ, ∩≡σΣφατφα≈σφφ√⌡ Σδ φα±≥≡εΘΩΦ ∩α≡α∞σ≥≡εΓ ≡ατßε≡∙ΦΩα: public void commentChar(int ch); public void slashSlashComments(boolean flag); public void slashStarComments(boolean flag); public void quoteChar(int ch); public void eolIsSignificant(boolean flag); public void lowerCaseMode(boolean fl); public void ordinaryChar(int ch); public void ordinaryChars(int low,int hi); public void resetSyntax(); public void parseNumbers(); public void whitespaceChars(int low, int hi); public void wordChars(int low, int hi); ═σ±ΩεδⁿΩε ∞σ≥εΣεΓ ε∩≡σΣσδ ■≥, ß≤Σσ≥ δΦ ≡ατßε≡∙ΦΩ Γ√Σσδ ≥ⁿ Γε Γ⌡εΣφε∞ ∩ε≥εΩσ ±≥≡εΩΦ Ωε∞∞σφ≥α≡Φ Φ σ±δΦ ß≤Σσ≥, ≥ε ΩαΩ∞Φ εß≡ατε∞. ╤ ∩ε∞ε∙ⁿ■ ∞σ≥εΣα commentChar Γ√ ∞εµσ≥σ ≤Ωατα≥ⁿ ±Φ∞Γεδ Ωε∞∞σφ≥α≡Φ . ┼±δΦ Γ ±≥≡εΩσ Γ⌡εΣφεπε ∩ε≥εΩα ∩ε∩αΣσ≥± ≥αΩεΘ ±Φ∞Γεδ, ≥ε εφ Φ Γ±σ ±δσΣ≤■∙Φσ τα φΦ∞ Σε Ωεφ÷α ≥σΩ≤∙σΘ ±≥≡εΩΦ ±Φ∞Γεδ√ ß≤Σ≤≥ ∩≡εΦπφε≡Φ≡εΓαφ√. ╠σ≥εΣ√ SlashSlashComments Φ slashStarComments ∩ετΓεδ ■≥ ≤Ωατα≥ⁿ, ≈≥ε Σδ Γ⌡εΣφεπε ≥σΩ±≥α Φ±∩εδⁿτ≤■≥± ≡ατΣσδΦ≥σδΦ Ωε∞∞σφ≥α≡ΦσΓ Γ ΓΦΣσ ΣΓεΘφεπε ±Φ∞Γεδα '/' Φ '/* à */', ±εε≥Γσ≥±≥Γσφφε. ▌≥ε ±εε≥Γσ≥±≥Γ≤σ≥ ±∩ε±εß≤ ≤ΩαταφΦ Ωε∞∞σφ≥α≡ΦσΓ Γ ∩≡επ≡α∞∞α⌡, ±ε±≥αΓδσφφ√⌡ φα τ√Ωα⌡ ∩≡επ≡α∞∞Φ≡εΓαφΦ ╤++ Φ ╤. ─δ ΓΩδ■≈σφΦ ≡σµΦ∞α Γ√ΣσδσφΦ Ωε∞∞σφ≥α≡ΦσΓ εßεΦ∞ ∞σ≥εΣα∞ Γ Ωα≈σ≥±≥Γσ ∩α≡α∞σ≥≡α φσεß⌡εΣΦ∞ε ∩σ≡σΣα≥ⁿ τφα≈σφΦσ true, α Σδ ε≥Ωδ■≈σφΦ - false. ╠σ≥εΣ quoteChar ∩ετΓεδ σ≥ ταΣα≥ⁿ ±Φ∞Γεδ, Ωε≥ε≡√Θ ß≤Σσ≥ Φ±∩εδⁿτεΓαφ Γ Ωα≈σ±≥Γσ ΩαΓ√≈σΩ. ╩επΣα ∩≡Φ ≡ατßε≡σ ∩ε≥εΩα Γ±≥≡σ≈α■≥± ±δεΓα, Γτ ≥√σ Γ ΩαΓ√≈ΩΦ, εφΦ ΓετΓ≡α∙α■≥± ∩≡επ≡α∞∞σ ≡ατßε≡α ßστ ΩαΓ√≈σΩ. ┼±δΦ ∩σ≡σΣα≥ⁿ ∞σ≥εΣ≤ eolIsSignificant τφα≈σφΦσ true, ≡ατΣσδΦ≥σδΦ ±≥≡εΩ ß≤Σ≤≥ Φφ≥σ≡∩≡σ≥Φ≡εΓα≥ⁿ± ΩαΩ ε≥Σσδⁿφ√σ ²δσ∞σφ≥√. ┼±δΦ µσ ²≥ε∞≤ ∞σ≥εΣ≤ ∩σ≡σΣα≥ⁿ τφα≈σφΦσ false, ≡ατΣσδΦ≥σδΦ ±≥≡εΩ ß≤Σ≤≥ Φ±∩εδⁿτεΓα≥ⁿ± αφαδεπΦ≈φε ∩≡εßσδα∞ Σδ ≡ατΣσδσφΦ ²δσ∞σφ≥εΓ Γ⌡εΣφεπε ∩ε≥εΩα. ╠σ≥εΣ lowerCaseMode ∩ετΓεδ σ≥ ΓΩδ■≈Φ≥ⁿ ≡σµΦ∞, ∩≡Φ Ωε≥ε≡ε∞ Γ±σ Γ√Σσδσφφ√σ ²δσ∞σφ≥√ ß≤Σ≤≥ ∩σ≡σΩεΣΦ≡εΓαφ√ Γ ±≥≡ε≈φ√σ ±Φ∞Γεδ√. ╠σ≥εΣ√ ordinaryChar Φ ordinaryChars ∩ετΓεδ ■≥ ≤Ωατα≥ⁿ ±Φ∞Γεδ√, Ωε≥ε≡√σ Σεδµφ√ Φφ≥σ≡∩≡σ≥Φ≡εΓα≥ⁿ± ΩαΩ εß√≈φ√σ, Φτ Ωε≥ε≡√⌡ ±ε±≥αΓδ ■≥± ±δεΓα ΦδΦ ÷Φ⌠≡√. ═α∩≡Φ∞σ≡, σ±δΦ ∩σ≡σΣα≥ⁿ ∞σ≥εΣ≤ ordinaryChar ±Φ∞Γεδ '.', ≥ε ±δεΓε java.io ß≤Σσ≥ Γε±∩≡ΦφΦ∞α≥ⁿ± ΩαΩ εΣΦφ ²δσ∞σφ≥. ┼±δΦ µσ ²≥επε φσ ±Σσδα≥ⁿ, ≥ε ≡ατßε≡∙ΦΩ Γ√ΣσδΦ≥ Φτ φσπε ≥≡Φ ²δσ∞σφ≥α - ±δεΓε java, ≥ε≈Ω≤ '.' Φ ±δεΓε io. ╠σ≥εΣ ordinaryChars ∩ετΓεδ σ≥ ≤Ωατα≥ⁿ ΣΦα∩ατεφ τφα≈σφΦΘ ±Φ∞ΓεδεΓ, Ωε≥ε≡√σ Σεδµφ√ Φφ≥σ≡∩≡σ≥Φ≡εΓα≥ⁿ± ΩαΩ εß√≈φ√σ. ╤ ∩ε∞ε∙ⁿ■ ∞σ≥εΣα resetSyntax Γ√ ∞εµσ≥σ ≤Ωατα≥ⁿ, ≈≥ε Γ±σ ±Φ∞Γεδ√ ß≤Σ≤≥ ≡α±±∞α≥≡ΦΓα≥ⁿ± , ΩαΩ εß√≈φ√σ. ╠σ≥εΣ parseNumbers ΓΩδ■≈ασ≥ ≡σµΦ∞ ≡ατßε≡α ≈Φ±σδ, ∩≡Φ Ωε≥ε≡ε∞ ≡α±∩ετφα■≥± Φ ∩≡σεß≡ατ≤■≥± ≈Φ±δα Γ ⌠ε≡∞α≥σ ± ∩δαΓα■∙σΘ Σσ± ≥Φ≈φεΘ ≥ε≈ΩεΘ. ╠σ≥εΣ whitespaceChars ταΣασ≥ ΣΦα∩ατεφ τφα≈σφΦΘ Σδ ±Φ∞ΓεδεΓ-≡ατΣσδΦ≥σδσΘ ε≥Σσδⁿφ√⌡ ±δεΓ Γ ∩ε≥εΩσ. ╠σ≥εΣ wordChars ∩ετΓεδ σ≥ ≤Ωατα≥ⁿ ±Φ∞Γεδ√, Ωε≥ε≡√σ Γδ ■≥± ±ε±≥αΓφ√∞Φ ≈α±≥ ∞Φ ±δεΓ. ╠σ≥εΣ√ Σδ ≡ατßε≡α Γ⌡εΣφεπε ∩ε≥εΩα╧ε±δσ ≥επε ΩαΩ Γ√ ±ετΣαδΦ ≡ατßε≡∙ΦΩ Γ⌡εΣφεπε ∩ε≥εΩα φα ßατσ Ωδα±±α StreamTokenizer Φ ≤±≥αφεΓΦδΦ σπε ∩α≡α∞σ≥≡√ ± ∩ε∞ε∙ⁿ■ ε∩Φ±αφφ√⌡ Γ√°σ ∞σ≥εΣεΓ, ∞εµφε ∩≡Φ±≥≤∩α≥ⁿ ±εß±≥Γσφφε Ω ≡ατßε≡Ωσ ∩ε≥εΩα. ╬ß√≈φε Σδ ²≥επε ε≡παφΦτ≤σ≥± ÷ΦΩδ, Γ Ωε≥ε≡ε∞ Γ√τ√Γασ≥± ∞σ≥εΣ nextToken: public int nextToken(); ▌≥ε≥ ∞σ≥εΣ ∞εµσ≥ Γσ≡φ≤≥ⁿ εΣφε Φτ ±δσΣ≤■∙Φ⌡ τφα≈σφΦΘ:
┼±δΦ ∞σ≥εΣ nextToken Γσ≡φ≤δ τφα≈σφΦσ TT_EOF, ±δσΣ≤σ≥ ταΓσ≡°Φ≥ⁿ ÷ΦΩδ ≡ατßε≡α Γ⌡εΣφεπε ∩ε≥εΩα. ╩αΩ ΦτΓδσ≈ⁿ ±≈Φ≥αφφ√σ ²δσ∞σφ≥√ ∩ε≥εΩα? ┬ Ωδα±±σ StreamTokenizer ε∩≡σΣσδσφε ≥≡Φ ∩εδ : public String sval; public double nval; public int ttype; ┼±δΦ ∞σ≥εΣ nextToken Γσ≡φ≤δ τφα≈σφΦσ TT_WORD, Γ ∩εδσ sval ±εΣσ≡µΦ≥± ΦτΓδσ≈σφφ√Θ ²δσ∞σφ≥ Γ ΓΦΣσ ≥σΩ±≥εΓεΘ ±≥≡εΩΦ. ┬ ≥ε∞ ±δ≤≈ασ, ΩεπΣα Φτ Γ⌡εΣφεπε ∩ε≥εΩα ß√δε ΦτΓδσ≈σφε ≈Φ±δεΓεσ τφα≈σφΦσ, εφε ß≤Σσ≥ ⌡≡αφΦ≥ⁿ± Γ ∩εδσ nval ≥Φ∩α double. ╬ß√≈φ√σ ±Φ∞Γεδ√ τα∩Φ±√Γα■≥± Γ ∩εδσ ttype. ╟α∞σ≥Φ∞, ≈≥ε σ±δΦ Γ ∩ε≥εΩσ εßφα≡≤µσφ√ ±δεΓα, Γτ ≥√σ Γ ΩαΓ√≈ΩΦ, ≥ε ±Φ∞Γεδ ΩαΓ√≈ΩΦ τα∩Φ±√Γασ≥± Γ ∩εδσ ttype, α ±δεΓα - Γ ∩εδσ sval. ╧ε ≤∞εδ≈αφΦ■ Φ±∩εδⁿτ≤σ≥± ±Φ∞Γεδ ΩαΓ√≈σΩ '"', εΣφαΩε ± ∩ε∞ε∙ⁿ■ ∞σ≥εΣα quoteChar Γ√ ∞εµσ≥σ ταΣα≥ⁿ δ■ßεΘ Σ≡≤πεΘ ±Φ∞Γεδ. ╧≡Φ φσεß⌡εΣΦ∞ε±≥Φ Γ ∩≡ε÷σ±±σ ≡ατßε≡α Γ√ ∞εµσ≥σ ε∩≡σΣσδΦ≥ⁿ φε∞σ≡ ≥σΩ≤∙σΘ ±≥≡εΩΦ, Γ√τΓαΓ Σδ ²≥επε ∞σ≥εΣ lineno: public int lineno(); ╧ε±δσ Γ√τεΓα ∞σ≥εΣα pushBack ±δσΣ≤■∙ΦΘ Γ√τεΓ ∞σ≥εΣα nextToken ∩≡ΦΓσΣσ≥ Ω ≥ε∞≤, ≈≥ε Γ ∩εδσ ttype ß≤Σσ≥ τα∩Φ±αφε ≥σΩ≤∙σσ τφα≈σφΦσ, α ±εΣσ≡µΦ∞εσ ∩εδσΘ sval Φ nval φσ Φτ∞σφΦ≥± . ╧≡ε≥ε≥Φ∩ ∞σ≥εΣα pushBack ∩≡ΦΓσΣσφ φΦµσ: public void pushBack(); ╠σ≥εΣ toString ΓετΓ≡α∙ασ≥ ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤, ∩≡σΣ±≥αΓδ ■∙≤■ ≥σΩ≤∙ΦΘ ²δσ∞σφ≥, Γ√Σσδσφφ√Θ Φτ ∩ε≥εΩα: public String toString(); |